Anticipatory resource allocation/activation and lazy de-allocation/deactivation

ABSTRACT

A computer-implemented method, carried out by one or more processors, for managing resources in a server environment. The method includes determining, by one or more processors, to shut down a first resource consumer, wherein the first resource consumer is assigned a first virtual resource with a first set of one or more host resources. It is determined, by one or more processors, whether a second virtual resource assigned to a second resource consumer requires the first set of one or more host resources. If the second virtual resource assigned to the second resource consumer does not require the first set of one or more host resources, it is determined, by one or more processors, not to deactivate the one or more host resources assigned to the first virtual resource.

BACKGROUND

In a virtual server environment, resources are typically allocated forutilization by virtual servers and other resource consumers. In a cloudenvironment, where a large number of virtual servers competing for andsharing common resources is deployed, the frequency of resourceallocations and de-allocations is by an order of magnitude higher thanin traditional server environments. Additional focus is put on input andoutput resources, where multiple and often time-consuming actions may beneeded to prepare a resource for use by a virtual server. It isdesirable that the resource activations and corresponding deactivationsbe performed in an automated and synchronized manner.

SUMMARY

Embodiments in accordance with the present invention disclose a method,computer program product and computer system for managing resources in aserver environment. The method includes determining, by one or moreprocessors, to shut down a first resource consumer, wherein the firstresource consumer is assigned a first virtual resource with a first setof one or more host resources. It is determined, by one or moreprocessors, whether a second virtual resource assigned to a secondresource consumer requires the first set of one or more host resources.If the second virtual resource assigned to the second resource consumerdoes not require the first set of one or more host resources, it isdetermined, by one or more processors, not to deactivate the one or morehost resources assigned to the first virtual resource.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a functional block diagram illustrating a distributed dataprocessing environment, in accordance with an embodiment of the presentinvention.

FIG. 2 is a flowchart depicting operational steps of a resource managerfor recurring activation of resource consumers, in accordance with anembodiment of the present invention.

FIG. 3A illustrates a state diagram depicting resource states and statetransitions, in accordance with one embodiment of the present invention.

FIG. 3B illustrates another state diagram depicting resource states andstate transitions, in accordance with one embodiment of the presentinvention.

FIG. 4 is a flowchart depicting operational steps of a resource managerfor selecting a candidate for lazy de-allocation, in accordance with anembodiment of the present invention.

FIG. 5 is a block diagram of components of a computer system, such asthe computer server of FIG. 1, in accordance with an embodiment of thepresent invention.

DETAILED DESCRIPTION

Embodiments in accordance with the present invention providedemand-based management of resource allocations and activations, as wellas resource de-allocations and deactivations. In particular instances,resource allocations and activations are performed in advance toaccelerate subsequent virtual server activation. In instances where avirtual server is deactivated, deactivation and de-allocation of virtualserver resources is delayed until the resources are called to supportanother virtual server.

Resource allocation is typically performed on demand when resources areneeded to activate a resource consumer or when additional resources arecalled for an active resource consumer. Correspondingly, resourcede-allocation is typically performed when the resource consumer isdeactivated. Therefore, on subsequent resource consumer activations,different host resources can be allocated to the virtual resources.Also, the same host resource can be allocated to different virtualresources of the same or different resource consumers at differentpoints in time.

In order to utilize a virtual resource, a resource activation istypically performed. Resource activation actions can include clearingmain memory before assignment to a resource consumer, and updatingnetwork configuration and storage access to tables in host firmware(i.e., physical server and/or hypervisors). The activation procedure candepend on a virtualization type, where the virtualization type is howthe host resource is virtualized so that, for instance, a singlephysical host resource represents multiple virtualized host resources.The activation procedure can also depend on where the resource consumeris deployed, more particularly, on which hypervisor level. Activation ofboth the virtual resource and the assigned host resource allows forresource utilization by server firmware, hypervisors, and privilegedoperating systems.

Example embodiments in accordance with the present invention will now bedescribed in detail with reference to the drawing figures. FIG. 1 is afunctional block diagram illustrating a distributed data processingenvironment, in accordance with one embodiment of the present invention.The distributed data processing environment includes physical server102, management console 104, and external physical host resource 106,all interconnected over management network 108.

Physical server 102 represents a computer system utilizing clusteredcomputers and components that act as a single pool of seamless resourceswhen accessed through I/O network 124, as is common in data centers andwith cloud computing applications. In general, physical server 102 isrepresentative of any programmable electronic device or combination ofprogrammable electronic devices capable of executing machine-readableprogram instructions and communicating with other computer devices via anetwork.

Management console 104 manages physical server 102, external physicalhost resource 106 and the components therein. Management console 104provides both a graphical user interface (GUI) and applicationprogramming interfaces (API) for automated configuration management.Resource manager 110, residing in management console 104, allows for themanagement of activating and deactivating resources. Resource manager110 can bundle resource activation steps for two or more resourceconsumers, where resource manager 110 can perform activation steps inparallel for the two or more resource consumers. Resource manager 110can also execute activation and deactivation when reassigning hostresources.

In this embodiment, hypervisor 114 provides execution environments formultiple virtual servers, such as virtual server 112A and virtual server112B, to run on physical server 102. In addition to virtual server 112Aand 112B, hypervisor 114 can host one or more additional hypervisors notillustrated in FIG. 1. Therefore, virtual server 112A, virtual server112B, and hypervisor 114 can execute on one or more underlying levels ofhypervisors. A server cluster can include one or more physical servers102, therefore, virtual servers can execute on different nodes (i.e.,physical servers) of the server cluster.

Virtual server 112A, virtual server 112B, and hypervisor 114 areresource consumers and each includes virtual resource definitions 122.Virtual resource definitions 122 can include, but are not limited to,processors, memory, and I/O ports. Virtual resources are supported byphysical resources, which can exist internally or externally of physicalserver 102. Typically, external and internal host resources includevirtual host resources. For example, virtual processors are based onphysical processors and virtual network adapters are based on physicalnetwork adapters. Examples of providers for virtualization of hostresources can include physical server 102 (hardware and firmware),hypervisor 114, or an independent virtualization entity not illustratedin FIG. 1. In this embodiment, internal physical host resource 116 andexternal physical host resource 106, respectively, include internalvirtual host resources 118 and external virtual host resources 120. I/Onetwork 124 can connect physical server 102 with external physical hostresource 106.

In general, management network 108 can be any combination of connectionsand protocols that can support communications between physical server102, management console 104, and external physical host resource 106.I/O network 124 can be any combination of connections and protocolsthat's can support communications between physical server 102 andexternal physical host resource 106. Typically, management network 108and I/O network 124 are independent from one and other. Managementnetwork 108 and I/O network 124 can include, for example, a local areanetwork (LAN), a wide area network (WAN), such as the internet, acellular network, or any combination of the preceding, and can furtherinclude wired, wireless, and/or fiber optic connections.

Resource allocation (allocation of host resources to virtual resources)and resource activation of both virtual resources and the assigned hostresources is typically performed when a resource consumer owning thevirtual resources is activated, and when resources are added to anactive resource consumer. Resource de-allocation and resourcedeactivation of both virtual resources and the assigned host resourcesis typically performed when a resource consumer owning a virtualresource is deactivated, and when resources are removed from an activeresource consumer. Typically, the allocation and de-allocation is aone-step operation. However, resource activation and deactivation canconsist of multiple steps which affect both the virtual resources andthe associated host resources, and depend on the operational state ofthe resource consumer.

Virtual resources typically exist as part of a resource consumer, morespecifically as part of the definitions of the resource consumer. Foreach type of virtual resource, there is a virtual resource providermanaging the virtual resource. For example, a network manager managescommunication network ports, or a storage manager manages storageresources and storage network ports. Managing virtual resources includesthe activating and deactivating of the virtual resources. Host resourcesare present when there are underlying physical resources present, andwhen the virtual entity providing appropriate virtualized host resourcesis present as well. Host resources can be organized in resource poolsfrom which resource manager 110 can allocate each individual resource.For each type of host resource, there is a host resource provider thatmanages the host resource.

To avoid unnecessary resource activation and deactivation cycles, aswell as to allow resource over-commitment, resource manager 110 performshost resource allocation and host resource activation when a resourceconsumer is activated and associated host resources are not yetallocated and/or activated. Resource manager 110 also performs hostresource allocation and host resource activation when virtual resourcedefinitions are added to an active resource consumer. A user of resourcemanager 110 can override the allocation and activation with a “resourcereserved” attribute setting for the resource consumer.

In the event a resource consumer is set to “resource reserved”, resourcemanager 110 allocates the host resources associated with the resourceconsumer and host resource activation occurs when resource manager 110activates the resource consumer. In the event a virtual resourcedefinition is added to the resource consumer that is set to “resourcereserved”, resource manager 110 allocates the host resources associatedwith the resource consumer, and if the resource consumer is active,resource manager 110 activates the host resources.

Lazy deactivation of host resources of a resource consumer avoids aresource deactivation cycle, and a subsequent host resource activationcycle, if the same resource consumer is to be activated again shortlythereafter, and if the host resources assigned to a virtual resourcehave not yet been requested to satisfy requests for host resources ofother resource consumers. Lazy de-allocation ensures that the hostresources remain allocated to the resource consumer as long as the hostresources are not required in support of another resource consumer.Resource manager 110 does not perform host resource de-allocation whenthe associated resource consumer is marked as “resource reserved”, evenin cases where the host resources would satisfy an allocation request ofanother resource consumer.

In other cases, the host resources remain allocated until the hostresources are required to satisfy an activation of another resourceconsumer. Resource manager 110 marks the host resources remainingallocated as “can-be-de-allocated”. In the event resource manager 110utilizes a priority-based allocation strategy, the host resources remainallocated until the host resources are required to satisfy an activationrequest of another resource consumer, where the other resource consumerhas a higher priority. In instances when virtual resource definitionsare added to a resource consumer that is active, resource manger 110allocates and activates the host resources in the same manner as if theresource consumer has just been activated. In instances when virtualresource definitions are removed from an active resource consumer,resource manager 110 deactivates and de-allocates the host resources, sothe host-resources become available for other resource consumers.

FIG. 2 is a flowchart depicting operational steps of a resource managerfor recurring activation of resource consumers, in accordance with anembodiment of the present invention.

Resource manager 110 performs activation of a resource consumer (step202). In this embodiment, resource manager 110 activates a resourceconsumer, where the activation of the resource consumer includes theallocation and activation of host resources. The resource consumer canutilize the host resources until resource manager 110 performs adeactivation of the resource consumer.

Resource manager 110 performs deactivation of the resource consumer(step 204). In this embodiment, resource manager 110 deactivates theresource consumer but the host resources remain activated and allocatedto the resource consumer. As a result, resource manager 110 does nothave to go through additional deactivation/activation cycles for thehost resources allocated to the resource consumer.

Resource manager 110 determines if the host resources are needed tosupport another resource consumer (decision step 206). In the eventresource manager 110 determines the host resources are needed to supportanother resource consumer (“yes” branch, step 206), resource manager 110allocates host resources to the other resource consumer (step 208). Inthe event resource manager 110 determines the host resources are notneeded to support another resource consumer (“no” branch, step 206),resource manager 110 requests to reactivate the resource consumer (step210).

Resource manager 110 allocates host resources to the other resourceconsumer (step 208). In this embodiment, resource manager 110 allocatesthe host resource of the initial resource consumer to the other resourceconsumer. Resource manager 110 does not have to re-activate the hostresources since the host resources are already active and allocated tothe initial resource consumer. The other resource consumer can utilizethe host resources once resource manager 110 allocates the hostresources.

Resource manager 110 requests to reactivate the resource consumer (step210). In this embodiment, resource manager 110 determines the initialresource consumer is to be reactivated. Resource manager 110 requests toreactivate the resource consumer since host resources originallyallocated to the resource consumer may be utilized by the other resourceconsumer as previously discussed in step 208.

Resource manager 110 determines if the host resources are stillallocated and activated (decision step 212). In the event resourcemanager 110 determines the host resources are no longer allocated andactivated (“no” branch, step 212), resource manager 110 allocates andactivates the host resources (step 214). In the event resource manager110 determines the host resources are still allocated and activated(“yes” branch, step 212), resource manager 110 completes reactivation ofthe resource consumer (step 216). If the host resources are stillallocated and activated for the other resource consumer, resourcemanager 110 can de-allocate the host resources from the other resourceconsumer and allocate the host resources to the initial host resourcewithout going through a deactivation/activation cycle.

Resource manager 110 allocates and activates the host resources (step214). In this embodiment, resource manager 110 determines that the hostresources are no longer being utilized by the other resource consumerand have been de-allocated and deactivated. Resource manager 110identifies the host resources, allocates, and activates the hostresources for the resource consumer being reactivated

Resource manager 110 completes reactivation of the resource consumer(step 216). In this embodiment, resource manager 110 finalizes thereactivation of the resource consumer with the allocated and activatedhost resources.

FIG. 3A illustrates a state diagram depicting resource states and statetransitions, in accordance with one embodiment of the present invention.The state diagram depicts resource states and state transitions, whereresources are allocated but not activated when a resource consumer isstarted, as well as situations where resources remain activated andallocated when the resource consumer is stopped.

In this embodiment, states and state transitions for the virtualresources of a resource consumer are represented. The states and statetransitions represent resource manager 110 performing allocation(without activation) when a resource consumer is set to resourcereserved. Resource manager 110 also performs lazy de-allocation anddeactivation when a resource consumer is not set to reserved. Ininstances where a resource consumer is marked as reserved, hostresources stay allocated and activated.

Defined 302 represents a state of a host resource which is defined butnot allocated to a resource consumer. Allocated 304 represents a stateof a resource that is allocated but not activated. In-use 310 andin-use-reserved 306 represent states of a host resource that isactivated and is being utilized by an active resource consumer, with thedifference being that the host resource is not reserved in the state,in-use 310. However, the host resource is reserved in the state,in-use-reserved 306. Activated 308 and can-be-de-allocated 312 representstates of a host resource that is activated but is not being utilized,since the assigned resource consumer is no longer active. During thestate, activated 308, the host resource is reserved and therefore cannotbe deactivated and de-allocated. During the state, can-be-de-allocated312, the host resource is not reserved and therefore eligible fordeactivation and de-allocation.

During the state, defined 302, resource manager 110 can set a hostresource to reserved, leading to state, allocated 304. Resource manager110 can also start the host resource causing a transition to the state,in-use 310. During the allocated 304 state, resource manager 110 canreverse the reservation, which leads back to the state, defined 302 orthe state, in-use reserved 306, where resource manager 110 can activatethe resource consumer to which the host resource is assigned. During thestate, in-use 310, resource manager 110 can set the host resource toreserved, leading to the state, in-use-reserved 306. Correspondingly,resource manager 110 can reverse the reservation of a host resource inthe state, in-use-reserved 306. This results in a transition to thestate, in-use 310. When resource manager 110 stops the resource consumerto which a host resource is assigned, resource manager 110 transfers aresource that is not reserved from the state, in-use 310 to the state,can-be-de-allocated 312. Resource manager 110 transfers a host resourcethat is reserved from the state, in-use-reserved 306 to the state,activated 308.

Resource manager 110 reversing the reservation of a host resource in thestate, activated 308 leads to the state can-be-de-allocated 312, andsetting a host resource to reserve in the state, can-be-de-allocated 312leads to the state, activated 308. From the state, can-be-de-allocated312, a transition back to the state, defined 302 occurs when theallocated host resources are needed in support of another resourceconsumer, causing a host resource deactivation and de-allocation. For asubsequent activation of the resource consumer, resource manager 110performs a resource allocation and activation cycle. However, if theresource is still in one of the states, can-be-de-allocated 312 oractivated 308, when the resource consumer is activated, then the hostresource is directly transferred back into the state, in-use 310 orin-use-reserved 306.

State transition 314 represents the allocation of host resources (i.e.,resource reserve) leading from defined 302 to allocated 304, as well asthe de-allocation of host resources (i.e., unreserved resourceconsumer), leading from allocated 304 to define 302. State transition316 represents the activation of host resources (i.e., resource consumerstartup) leading from allocated 304 to in-use-reserved 306. Statetransition 328 presents the allocation and activation of the hostresources leading from defined 302 to in-use 310. State transition 318represents the transfer of reserved host resources leading from in-use310 to in-use-reserved 306, and the transfer of not-reserved hostresources leading from in-use-reserved 306 to in-use 310. Statetransition 320 represents the shutdown of a resource consumer, leadingfrom in-use-reserved 306 to activated 308, and represents the startup ofa resource consumer leading from activated 308 to in-use-reserved 306.State transition 322 represents the shutdown of a resource consumerleading from in-use 310 to can-be-de-allocated 312, and represents thestartup of a resource consumer leading from can-be-de-allocated 312 toin-use 310. State transition 324 represents the preparations forallocation of host resources (i.e., resource reserved) leading fromcan-be-de-allocated 312 to activated 308, as well as the preparationsfor de-allocation of host resources (i.e., unreserved resource consumer)leading from activated 308 to can-be-de-allocated 312. State transition326 represents deactivation and de-allocation of host resources whichresource manager 110 performs. Additionally, resource manager 110reassigns the host resources to virtual resources of another resourceconsumer.

FIG. 3B illustrates another state diagram depicting resource states andstate transitions, in accordance with one embodiment of the presentinvention.

In this embodiment, an alternative implementation is presented, whereresource manager 110 performs host resource allocation with subsequenthost resource activation. Such an implementation accelerates theactivation of the resource consumer, more particularly, the firstresource consumer activation. For subsequent resource consumeractivations, resource manager 110 can utilize a lazy deactivation andde-allocation strategy. States and state transitions for the virtualresources of a resource consumer are represented in FIG. 3B. The statesand state transitions represent resource manager 110 performingallocation (without activation) when a resource consumer is set toresource reserved. Resource manager 110 also performs lazy de-allocationwhen a resource consumer is not set to resource reserved. In instanceswhere a resource consumer is marked as reserved, host resources stayallocated and activated. In this embodiment, there is no state,allocated 304, as described previously with reference to FIG. 3A.Resource manager 110 transfers a host resource set to reserved toactivated 308 rather than to allocated 304.

State transition 330 represents the allocation and activation of hostresources (i.e., resource reserved) leading from defined 302 toactivated 308, and state transition 340 represents the allocation andactivation of host resources (i.e., resource unreserved) leading fromdefined 302 to in-use 310. State transition 332 represents the shutdownof a resource consumer leading from in-use-reserved 306 to activated308, and represents the startup of a resource consumer leading fromactivated 308 to in-use-reserved 306. State transition 334 representspreparations for de-allocation of host resources (i.e., unreservedresource consumer) leading from activated 308 to can-be-de-allocated312. State transition 336 represents the allocation of host resources(i.e., resource unreserved) leading from in-use 310 to in-use-reserved306, as well as, the preparations for de-allocation of host resources(i.e., resource unreserved) leading from in-use-reserved 306 to in-use310.

State transition 338 represents the shutdown of a resource consumerleading from in-use 310 to can-be-de-allocated 312, and represents thestartup of a resource consumer leading from can-be-de-allocated 312 toin-use 310. State transition 342 represents the deactivations andde-allocation/reallocation of host resources which resource manager 110performs. Additionally, resource manager 110 reassigns the hostresources to virtual resources of another resource consumer.

The lazy de-allocation strategy includes allocating resources to aresource consumer, where utilization of host resources is based on theavailability of the host resources (i.e., host resources that are notassigned to any resource consumer). However, in a situation where thereare no unassigned host resources, resource manager 110 attempts tode-allocated host resources from other resource consumers which are notactive and not set to “resource reserved”. However, de-allocating a hostresource from another resource consumer can result in the resourceconsumer not being able to start. Resource manager 110 can utilize astrategy for de-allocating which minimizes the number of resourceconsumers that do not start. As a result, resource manager 110 attemptsto de-allocate as few host resources as possible, and in a situationwhere there are resource consumers that cannot start, resource manger110 can de-allocate the host resources for one of the resource consumersthat cannot start, thus increasing the number of host resourcesavailable, and reducing the number of requests to obtain host resourcesfrom other resource consumers.

Another strategy can include anticipatory allocation and activation atdefinition time. Resource manager 110 can allocate and activate hostresources subsequent to receiving the virtual resource definitions. Inthis strategy, a reservation mechanism is not utilized for thecontrolling of host resource allocations, and the degree of hostresource over-commitment is reduced. Host resource over-commitment isthe ratio between the number of required host resources to fulfillrequirements of virtual resource definitions and the number of hostresources that are actually available to fulfill requirements of thevirtual resource definitions. Resource manager 110 performs anticipatoryallocations and activations as soon as the host resources required for aresource consumer become available. Resource manager 110 performs lazyde-allocation when host resources are required by another resourceconsumer that is active, is to be active, or is defined with a higherpriority.

FIG. 4 is a flowchart depicting operational steps of a resource managerfor selecting a candidate for lazy de-allocation, in accordance with anembodiment of the present invention.

Resource manager 110 determines which host resources are required forresource satisfaction of a resource consumer (step 402). In thisembodiment, resource manager 110 determines the host resources requiredaccording to the virtual resource definitions for the resource consumer.Resource manger 110 can request the virtual resource definitions toobtain a list of required host resources for resource satisfaction ofthe resource consumer.

Resource manager 110 determines if all host resources are available inresource pools (decision step 404). In the event resource manager 110determines not all the host resources are available in the resourcepools (“no” branch, step 404), resource manager 110 determines resourceconsumers from which additional host resources can be taken (step 406).In the event resource manager 110 determines that all the host resourceare available in the resource pools (“yes” branch, step 404), resourcemanager 110 allocates the required host resources to the requestingresource consumer (step 414).

Resource manager 110 determines resource consumers from which additionalhost resources can be taken (step 406). In this embodiment, resourcemanager 110 identifies other resource consumers according to criteriathat include resource consumers that are not active and do not havereserved host resources which cannot be de-activated and de-allocated.By identifying the other resource consumers according to the criteria,resource manager 110 determines which host resources can be taken thatmay possibly satisfy resource requirements of the requesting resourceconsumer.

Resource manager 110 determines if the de-allocations of the hostresources allow for satisfaction of the request for the resourceconsumer (decision step 408). In the event resource manager 110determines the de-allocation of the host resources allows forsatisfaction of the request for the resource consumer (“yes” branch,step 408), resource manager 110 selects resource consumers for hostresource de-allocation according to the defined lazy de-allocationstrategy (step 410). In the event resource manager 110 determines thede-allocation of the host resources does not allow for satisfaction ofthe request for the resource consumer (“no” branch, step 408), resourcemanager 110 denies the request for the resource consumer and selectionof a candidate for lazy de-allocation ceases.

Resource manager 110 selects resource consumers for host resourcede-allocation according to the defined lazy de-allocation strategy (step410). As previously discussed, the lazy de-allocation strategy includesallocating resources to a resource consumer, where utilization of hostresources is based on the availability of the host resources. Resourcemanager 110 can select resource consumers based on priority of each ofthe resource consumer and a period of time a resource consumer has notbeen active. Resource manager 110 selects host resources of the resourceconsumers that are not active and not set to “resource reserved”.

Resource manager 110 deactivates and de-allocates the required hostresources from the selected resource consumers (step 412), andsubsequently, resource manager 110 allocates the required host resourcesto the requesting resource consumer (step 414).

FIG. 5 depicts a block diagram of components of a computer, such asmanagement console 104, hosting resource manager 110 in accordance withan illustrative embodiment of the present invention. It should beappreciated that FIG. 5 provides only an illustration of oneimplementation and does not imply any limitations with regard to theenvironments in which different embodiments may be implemented. Manymodifications to the depicted environment may be made.

Management console 104 include communications fabric 502, which providescommunications between computer processor(s) 504, memory 506, persistentstorage 508, communications unit 510, and input/output (I/O)interface(s) 512. Communications fabric 502 can be implemented with anyarchitecture designed for passing data and/or control informationbetween processors (such as microprocessors, communications and networkprocessors, etc.), system memory, peripheral devices, and any otherhardware components within a system. For example, communications fabric502 can be implemented with one or more buses.

Memory 506 and persistent storage 508 are examples of computer readabletangible storage devices. A storage device is any piece of hardware thatis capable of storing information, such as, data, program code infunctional form, and/or other suitable information on a temporary basisand/or permanent basis. In this embodiment, memory 506 includes randomaccess memory (RAM) 514 and cache memory 516. In general, memory 506 caninclude any suitable volatile or non-volatile computer readable storagedevice.

Resource manager 110 is stored in persistent storage 508 for executionby one or more of computer processors 504 via one or more memories ofmemory 506. In this embodiment, persistent storage 508 includes amagnetic hard disk drive. Alternatively, or in addition to a magnetichard disk drive, persistent storage 508 can include a solid state harddrive, a semiconductor storage device, read-only memory (ROM), erasableprogrammable read-only memory (EPROM), flash memory, or any othercomputer-readable storage medium that is capable of storing programinstructions or digital information.

The media used by persistent storage 508 may also be removable. Forexample, a removable hard drive may be used for persistent storage 508.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer readable storage medium that is also part of persistent storage508.

Communications unit 510, in these examples, provides for communicationswith other data processing systems or devices, including systems anddevices within or controlled by management console 104. In theseexamples, communications unit 510 includes one or more wireless networkinterface cards. Communications unit 510 may provide communicationsthrough the use of either or both physical and wireless communicationslinks. Computer programs and processes, such as resource manager 110,may be downloaded to persistent storage 508 through communications unit510, or uploaded to another system through communications unit 510.

I/O interface(s) 512 allows for input and output of data with otherdevices that may be connected to management console 104. For example,I/O interface 512 may provide a connection to external devices 518 suchas a keyboard, keypad, a touch screen, and/or some other suitable inputdevice. External devices 518 can also include portable computer readablestorage media such as, for example, thumb drives, portable optical ormagnetic disks, and memory cards. Software and data used to practiceembodiments of the present invention can be stored on such portablecomputer readable storage media and can be loaded onto persistentstorage 508 via I/O interface(s) 512. I/O interface(s) 512 may alsoconnect to a display 520. Display 520 provides a mechanism to displaydata to a user and may be, for example, a touch screen or a computermonitor.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

What is claimed is:
 1. A method for managing resources in a serverenvironment, the method comprising: determining, by one or moreprocessors, to deactivate a first resource consumer, wherein a firstvirtual resource with a first set of one or more host resources remainsassigned to the deactivated first resource, wherein the first set of oneor more host resources of the first resource consumer includes at leasthost resources that are not active and do not have host resourcereserves; determining, by one or more processors, if a second virtualresource assigned to a second resource consumer requires the first setof one or more host resources; responsive to determining the secondvirtual resource assigned to the second resource consumer does notrequire the first set of one or more host resources, determining, by oneor more processors, not to deactivate the one or more host resourcesassigned to the first virtual resource; determining, by one or moreprocessors, a second set of one or more host resources is required tosatisfy a third resource consumer; and responsive to determining thesecond set of one or more host resources is available, determining, byone or more processors, to utilize the first set of one or more hostresources of the first resource consumer for the required second set ofone or more host resources.
 2. The method of claim 1, furthercomprising: responsive to determining a second virtual resource assignedto a second resource consumer requires the first set of one or more hostresources, deactivating, by one or more processors, the first set of oneor more host resources assigned to the first virtual resource; andde-allocating, by one or more processors, the first set of one or morehost resources assigned to the first virtual resource.
 3. The method ofclaim 1, wherein determining the second set of one or more hostresources is available is based at least on a resource consumer priorityassignment associated with the second set of one or more resources. 4.The method of claim 3, further comprising: determining, by one or moreprocessors, if the first set of one or more host resources satisfies thethird resource consumer; and responsive to determining the first set ofone or more host resources satisfies the third resource consumer,de-allocating, by one or more processors, the first set of one or morehost resources.
 5. The method of claim 4, further comprising:deactivating, by one or more processors, the first set of one or morehost resources; and allocating, by one or more processors, the first setof one or more host resources to the third resource consumer.